Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make linking work with native source code #2172

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft

Conversation

Jonas-C
Copy link
Contributor

@Jonas-C Jonas-C commented Mar 12, 2024

God aften.

Fikk en litt kul idé om å få til linking uten å trenge å måtte kjøre opp frontend-packages. Den er kanskje litt sinnsyk, og forblir derfor draft inntil videre. Testene feiler fordi jeg ikke har lagt inn noe innsats for å få ting til å kjøre som ESM.

Man må ha litt kunnskap om hvordan package resolution og package.json funker, så det kommer nå. Hvis dere kan noe om det fra før av er det bare å hoppe over dette:

I package.json er det tre (egentlig fire/fem) felter som avgjør hvor man faktisk importerer kode fra.

  • "main": Brukes tradisjonelt sett av node for å hente ut kode på CommonJS-format (tenk module.exports)
  • "module": Brukes av nettlesere, og til en viss grad node (tenk export {something}).
  • "types": TypeScript-greier.

Når vi linker inn pakker vanligvis vil dette si at vi tar i bruk kode som ligger i main og module, som peker til /lib/index.js og es/index.js. Hva om vi bare pekte til src/index.ts istedenfor? Det funker som et skudd... ish.

package.json har også feltet publishConfig, som lar en gjøre endringer til en package.json-fil i øyeblikket den publiseres. Det vil si at vi kan endre på verdiene til main, module og types når vi publiserer en pakke. Da kan vi peke på kompilert kode når vi ikke linker.

Det finnes dessverre noen ulemper med denne fremgangsmåten:

  • Vi må transpilere mer data. Man merker at sidelasting er tregere når man har lenket inn pakker i større grad enn man gjorde før. Vil tro dette er mest merkbart i ED.
  • Vi må ha en css-fil for "linked" og "unlinked" i hver frontend.
  • Det er en viss fare for at publishConfig ikke støtter alle feltene vi definerer der. Det avhenger litt av hvilket verktøy man bruker. Jeg vet ikke helt om yarn støtter alle våre.

Jeg tror egentlig ikke at dette er noe vi har veldig lyst til å gå for. Men kanskje noen mener noe annet? Dette er blant annet en grei indikator på monorepo-ytelse.

@Jonas-C Jonas-C requested a review from a team March 12, 2024 20:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant